/**
* Copyright 2008 Sunnada Co.,Ltd
* All right reserved.
* 协议打包与解析
* V1.0.0  san    2008-11-10  Created
*/
package com.sunnada.edu.system.pub.socket;

public class FunCmd {

  //转换为4个16进制
  public static String WordToFourAscii(int iByte){
        String strResult=Integer.toHexString(iByte);
        if (strResult.length()<4){
                for (int i=strResult.length();i<4;i++){
                        strResult="0"+strResult;
                }
        }
        if (strResult.length()>4){
                strResult=strResult.substring(strResult.length()-4);
        }
        return strResult;
  }

  //高低字节对换
  public static String HighToLow(String sSrc){
        String strResult="";
        switch (sSrc.length()){
                default:strResult=sSrc;break;
                case 2:strResult=sSrc;break;
                case 4:strResult=strResult+sSrc.charAt(2)+sSrc.charAt(3)+sSrc.charAt(0)+sSrc.charAt(1);break;
                case 6:strResult=strResult+sSrc.charAt(4)+sSrc.charAt(5)+sSrc.charAt(2)+sSrc.charAt(3)+sSrc.charAt(0)+sSrc.charAt(1);break;
                case 8:strResult=strResult+sSrc.charAt(6)+sSrc.charAt(7)+sSrc.charAt(4)+sSrc.charAt(5)+sSrc.charAt(2)+sSrc.charAt(3)+sSrc.charAt(0)+sSrc.charAt(1);break;
        }
    return strResult;
  }

  public static String ByteToTwoAscii(int iSrc){
        String strResult=Integer.toHexString(iSrc);
        if (strResult.length()<2){
                for (int i=strResult.length();i<2;i++){
                        strResult="0"+strResult;
                }
        }
        if (strResult.length()>2){
                strResult=strResult.substring(strResult.length()-2);
        }
        return strResult;
  }

  //累加命令串
  public static String totalSum(String iCommand){
        int iLen=0,iAddSum=0;
        iLen=iCommand.length()/2;
        for (int i=0;i<iLen;i++){
                iAddSum=iAddSum+Integer.parseInt(iCommand.substring(i*2,i*2+2),16);
        }
          String strResult=Integer.toHexString(iAddSum);
          strResult=HighToLow(WordToFourAscii(iAddSum));
          return strResult;
  }
  //ASCII只和,不能有汉字,如果有汉字则要重新写>128
  public static String totalAscSum(String iCommand)
  {
   //可以对汉字进行校验和
    int iAddSum=0;
    byte[] lVal=iCommand.getBytes();
    for(int i=0;i<lVal.length;i++)
    {
      iAddSum=iAddSum + (lVal[i]&0xFF);
    }
    String strResult=Integer.toHexString(iAddSum);
    strResult=WordToFourAscii(iAddSum);
    return strResult;
  }

  public static String totalAscSum(byte[] lVal)
  {
   //可以对汉字进行校验和
    int iAddSum=0;
    for(int i=0;i<lVal.length;i++)
    {
      iAddSum=iAddSum + (lVal[i]&0xFF);
    }
    String strResult=Integer.toHexString(iAddSum);
    strResult=WordToFourAscii(iAddSum);
    return strResult;
  }
  //生成随机函数
  public static String GenerationRandom(){
          String strResult="";
          double fR=0;
          int iR=0;
          for (int i=0;i<8;i++){
            fR=Math.random()*255;
            iR=(int)Math.round(fR);
            strResult=strResult+ByteToTwoAscii(iR);
          }
          return strResult;
  }
  public static String getBytetoAscii(byte[]b){
	  String s="";
	  for(int i=0;i<b.length;i++){
		  s+=ByteToTwoAscii(b[i]);
	  }
	  return s;
  }
}
